/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package iTrace.impl;

import iTrace.AnotationLink;
import iTrace.ITracePackage;
import iTrace.M2MLink;
import iTrace.Model;
import iTrace.ModelElement;
import iTrace.TraceLink;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;

import org.eclipse.emf.internal.cdo.CDOObjectImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Model Element</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link iTrace.impl.ModelElementImpl#getRef <em>Ref</em>}</li>
 *   <li>{@link iTrace.impl.ModelElementImpl#getModelElementModel <em>Model Element Model</em>}</li>
 *   <li>{@link iTrace.impl.ModelElementImpl#getSourceTraceLink <em>Source Trace Link</em>}</li>
 *   <li>{@link iTrace.impl.ModelElementImpl#getTargetM2MLink <em>Target M2M Link</em>}</li>
 *   <li>{@link iTrace.impl.ModelElementImpl#getTargetAnotationLink <em>Target Anotation Link</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class ModelElementImpl extends CDOObjectImpl implements ModelElement {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ModelElementImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return ITracePackage.Literals.MODEL_ELEMENT;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected int eStaticFeatureCount() {
		return 0;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EObject getRef() {
		return (EObject)eGet(ITracePackage.Literals.MODEL_ELEMENT__REF, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setRef(EObject newRef) {
		eSet(ITracePackage.Literals.MODEL_ELEMENT__REF, newRef);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Model getModelElementModel() {
		return (Model)eGet(ITracePackage.Literals.MODEL_ELEMENT__MODEL_ELEMENT_MODEL, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setModelElementModel(Model newModelElementModel) {
		eSet(ITracePackage.Literals.MODEL_ELEMENT__MODEL_ELEMENT_MODEL, newModelElementModel);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	public TraceLink getSourceTraceLink() {
		return (TraceLink)eGet(ITracePackage.Literals.MODEL_ELEMENT__SOURCE_TRACE_LINK, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSourceTraceLink(TraceLink newSourceTraceLink) {
		eSet(ITracePackage.Literals.MODEL_ELEMENT__SOURCE_TRACE_LINK, newSourceTraceLink);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	public M2MLink getTargetM2MLink() {
		return (M2MLink)eGet(ITracePackage.Literals.MODEL_ELEMENT__TARGET_M2M_LINK, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTargetM2MLink(M2MLink newTargetM2MLink) {
		eSet(ITracePackage.Literals.MODEL_ELEMENT__TARGET_M2M_LINK, newTargetM2MLink);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	public AnotationLink getTargetAnotationLink() {
		return (AnotationLink)eGet(ITracePackage.Literals.MODEL_ELEMENT__TARGET_ANOTATION_LINK, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTargetAnotationLink(AnotationLink newTargetAnotationLink) {
		eSet(ITracePackage.Literals.MODEL_ELEMENT__TARGET_ANOTATION_LINK, newTargetAnotationLink);
	}

} //ModelElementImpl
